package org.yelongframework.baidu.aip.result;

import java.util.Objects;

import org.json.JSONObject;

/**
 * 抽象实现
 * 
 * @since 1.0.0
 */
public abstract class AbstractAipResult implements AipResult {

	/** 错误消息键值 */
	public static final String ERROR_MSG_KEY = "error_msg";

	/** 错误编码键值 */
	public static final String ERROR_CODE_KEY = "error_code";

	/** JSON对象 */
	private final JSONObject jsonObject;

	// ==================================================构造器==================================================

	/**
	 * @param jsonObject JSON对象
	 */
	public AbstractAipResult(JSONObject jsonObject) {
		this.jsonObject = Objects.requireNonNull(jsonObject, "jsonObject");
	}

	// ==================================================是否执行成功==================================================

	@Override
	public boolean isSuccess() {
		return jsonObject.optString(ERROR_CODE_KEY, null) == null;
	}

	// ==================================================错误消息==================================================

	@Override
	public Integer getErrorCode() {
		return jsonObject.getInt(ERROR_CODE_KEY);
	}

	@Override
	public String getErrorMsg() {
		return jsonObject.getString(ERROR_MSG_KEY);
	}

	// ==================================================JSON对象==================================================

	@Override
	public JSONObject getJsonObject() {
		return jsonObject;
	}

	// ==================================================转字符串==================================================

	@Override
	public String toString() {
		return jsonObject.toString();
	}

}
